介绍:在servlet 3.0之后给我们提供了几种去掉web.xml文件实现servlet、filter、listener的方式方法,其中主流的包含注解和SPI。
一、注解实现servlet功能:通过注解相对很简单,只要在extends HttpServlet的实现类中加上@WebServlet(value = {"请求"})即可。如下:
@WebServlet(value = {"/testServlet"})
public class TestServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.print("测试");
}
}
其中实现filter、listener的方式类似
二、SPI方式实现:
首先需要在项目的classpath录下新建META-INF/services文件夹,注意,文件夹名称一定要是以上名称。然后在此文件夹下新建一个文件,文件的名称必须为要扩展的接口全名,如下图
文件的内容必须是要实现该接口(此接口为上图的javax.servlet.ServletContainerInitializer)的实现类(全限定名,如 :com.myz.Test1)
最后实现类如下:
public class Test1 implements ServletContainerInitializer {
public void onStartup(Set<Class<?>> set, ServletContext servletContext) throws ServletException {
ServletRegistration.Dynamic registration = servletContext.addServlet("testSer",new TestServlet());
registration.addMapping("/testSer");
}
}